export function dateToStr(date) {
	if (typeof date !== 'number') {
		return ''
	}
	date = new Date(date)
	let hh = date.getHours()
	let mm = date.getMinutes()
	if (hh<10) {
		hh = '0' + hh
	}
	if (mm<10) {
		mm = '0' + mm
	}
	return hh + ':' + mm
}
const utils = {
	//去空格
	trim: function(value) {
		return value.replace(/(^\s*)|(\s*$)/g, "");
	},
	//内容替换
	replaceAll: function(text, repstr, newstr) {
		return text.replace(new RegExp(repstr, "gm"), newstr);
	}
}
function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function(n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}
// 支付宝
function startToPayAB(orderInfoStr,fn) {
 var that = this;
 var param = {
  success: function(e) {
   fn(true);
  },
  fail: function(e) {
   fn(false);
  }
 };
 param.provider = "alipay"
 param.orderInfo = orderInfoStr;
 uni.requestPayment(param)
}
function startToPayWx(payInfo, fn) {
	var param = {
		success: function() {
			fn(true);
		},
		fail: function(err) {
			fn(false);
		}
	};
	param.provider = "wxpay"
	param.orderInfo = JSON.stringify({
		appid: payInfo.appId,
		prepayid: payInfo.prepayId,
		timestamp: payInfo.timeStamp,
		noncestr: payInfo.nonceStr,
		package: payInfo.packageValue,
		sign: payInfo.sign,
		partnerid:payInfo.partnerId
	})
	uni.requestPayment(param)
}
function doPay(data, fn) {
	uni.requestPayment({
		timeStamp: data.timeStamp,
		nonceStr: data.nonceStr,
		package: data.packageValue,
		signType: data.signType,
		paySign: data.paySign,
		success: function() {
			fn(true);
		},
		fail: function(err) {
			fn(false);
		}
	})
}
function formatDate(inputTime) {
	var date = new Date(inputTime);
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	m = m < 10 ? ('0' + m) : m;
	var d = date.getDate();
	d = d < 10 ? ('0' + d) : d;
	return y + '-' + m + '-' + d;
}

function formatDateTime(inputTime) {
	var date = new Date(inputTime);
	var y = date.getFullYear();
	var m = date.getMonth() + 1;
	m = m < 10 ? ('0' + m) : m;
	var d = date.getDate();
	d = d < 10 ? ('0' + d) : d;
	var h = date.getHours();
	h = h < 10 ? ('0' + h) : h;
	var minute = date.getMinutes();
	var second = date.getSeconds();
	minute = minute < 10 ? ('0' + minute) : minute;
	second = second < 10 ? ('0' + second) : second;
	return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
};

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}

function showLoad(title, fn) {
	uni.showLoading({
		title: title,
		mask: true,
		success: r => {
			if (typeof fn == "function") {
				fn();
			}
		}
	})
}

function showToast(content, type, fn) {
	if (content == undefined) { //关闭提示
		uni.hideToast();
	} else {
		var icon = '' //加载提示
		if (type == 0) { //普通提示
			icon = 'none'
		} else if (type == 1) { //成功提示
			icon = 'success'
		}
		uni.showToast({
			title: content,
			icon: icon,
			mask: false,
			duration: 1500,
			success: function() {
				if (typeof fn == "function") {
					setTimeout(function() {
						fn();
					}, 500);
				}
			}
		})
	}
}

function ifNull(value, desc) {
	if (value) {
		return false;
	} else {
		this.showToast(desc, 0);
		return true;
	}
}


function userlogin(fn) {
	var token = uni.getStorageSync("token");
	if (token) {
		fn(token);
		// 设置用户信息
	} else {
		uni.removeStorageSync("token");
		uni.reLaunch({
			url: '/pages/account/authorize/authorize',
		});
	}
}

function isLogin(fn) {
	var token = uni.getStorageSync("token");
	if (token) {
		fn(true);
	} else {
		uni.removeStorageSync("token");
		fn(false);
	}
}

function getToken() {
	var token = uni.getStorageSync("token");
	if (token) {
		return token;
	} else {
		return "";
	}
}

function post(url, postData, doSuccess, doComplete) {
	let token = this.getToken();
	uni.request({
		url: url,
		data: postData,
		header: {
			'token': token,
			'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
		},
		method: 'POST',
		success: function(res) {
			if (res.statusCode != 200) {
				uni.showToast({
					title: '通讯失败,请联系管理员',
					icon: 'none',
					mask: false,
					duration: 1600
				})
				return;
			}
			if (typeof doSuccess == "function") {
				let result = res.data;
				if (result.code == 200) {
					doSuccess(result);
				} else if (result.code == 403) {
					uni.removeStorageSync("userInfo");
					uni.reLaunch({
						url: '/pages/account/authorize/authorize',
					})
				} else if (result.code == 500) {
					uni.showToast({
						title: result.msg,
						icon: 'none',
						mask: false,
						duration: 2000
					})
				} else {
					doSuccess(result);
				}
			}
		},
		fail: function() {
			uni.hideLoading();
			uni.showModal({
				title: '请求失败',
				content: "求失败，请联系平台管理员"
			})
		},
		complete: function() {
			if (typeof doComplete == "function") {
				doComplete();
			}
		}
	})
}

/*获取当前页url*/
function getCurrentPageUrl() {
  var pages = getCurrentPages(); //获取加载的页面
  var currentPage = pages[pages.length - 1]; //获取当前页面的对象
  var url = currentPage.route; //当前页面url
  return url;
}

/*获取当前页带参数的url*/
function getCurrentPageUrlWithArgs() {
  var pages = getCurrentPages(); //获取加载的页面
  var currentPage = pages[pages.length - 1]; //获取当前页面的对象
  var url = currentPage.route; //当前页面url
  var options = currentPage.options; //如果要获取url中所带的参数可以查看options
  //拼接url的参数
  var urlWithArgs = url + '?';
  for (var key in options) {
    var value = options[key];
    urlWithArgs += key + '=' + value + '&';
  }
  urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1);
  return urlWithArgs;
}
var dateUtils = {
	UNITS: {
		'年': 31557600000,
		'月': 2629800000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function(milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	compare: function(dateStr) {
		var date = this.parse(dateStr)
		console.log(date)
		var diff = date.getTime() - Date.now();
		if (diff > 0) {
			return 1
		}
		if (diff < 0) {
			return -1
		}
		return 0
	},
	format: function(dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		return date.getFullYear() + '/' + this._format(date.getMonth() + 1) + '/' + this._format(date.getDate()) + ' ' +
			this._format(date.getHours()) + ':' + this._format(date.getMinutes());
	},
	parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	},
	_format: function(number) {
		return (number < 10 ? ('0' + number) : number);
	},
	crtDate: function() { //获取当前日期yyyy-mm-dd
		var date = new Date();
		return date.getFullYear() + '-' + this._format(date.getMonth() + 1) + '-' + this._format(date.getDate());
	},
	crtTime: function() { //获取当前时间hh-mm
		var date = new Date();
		return this._format(date.getHours()) + ':' + this._format(date.getMinutes());
	},
	myFormat: function(dateStr) {
		var date = this.parse(dateStr);
		return date.getFullYear() + '/' + this._format(date.getMonth() + 1) + '/' + this._format(date.getDate()) + ' ' +
			this._format(date.getHours()) + ':' + this._format(date.getMinutes());
	},
	someDayBefore: function(x) { //获取x天前的日期yyyy-mm-dd
		if (!x || !parseInt(x)) {
			return '';
		}
		var timeStamp = new Date().getTime();
		var timeStamp2 = timeStamp - parseInt(x) * 24 * 60 * 60 * 1000;
		var date = new Date(timeStamp2);
		return date.getFullYear() + '-' + this._format(date.getMonth() + 1) + '-' + this._format(date.getDate());
	},
	getTimeStamp: function(x) { //获取x天前的时间戳，x为空表示获取现在的时间戳
		var timeStamp = new Date().getTime();
		if (!x || !parseInt(x)) {
			return timeStamp;
		} else {
			return timeStamp - parseInt(x) * 24 * 60 * 60 * 1000;
		}
	}
};
export function traditionalized(cc){
	var str='';
	if (cc) {
		for(var i=0;i<cc.length;i++){
		    if(simpPYStr().indexOf(cc.charAt(i))!=-1)
		        str+=ftPYStr().charAt(simpPYStr().indexOf(cc.charAt(i)));
		    else if(qqPYStr().indexOf(cc.charAt(i))!=-1)
		        str+=ftPYStr().charAt(qqPYStr().indexOf(cc.charAt(i)));
		    else
		        str+=cc.charAt(i);
		}
	}
    return str;
}
export function simplized(cc){
    var str='';
	if (cc) {
		for(var i=0;i<cc.length;i++){
		    if(ftPYStr().indexOf(cc.charAt(i))!=-1)
		        str+=simpPYStr().charAt(ftPYStr().indexOf(cc.charAt(i)));
		    else if(qqPYStr().indexOf(cc.charAt(i))!=-1)
		        str+=simpPYStr().charAt(qqPYStr().indexOf(cc.charAt(i)));
		    else
		        str+=cc.charAt(i);
		}
	}
    return str;
}
function qqlized(cc){
    var str='';
    for(var i=0;i<cc.length;i++){
        if(ftPYStr().indexOf(cc.charAt(i))!=-1)
            str+=qqPYStr().charAt(ftPYStr().indexOf(cc.charAt(i)));
        else if(simpPYStr().indexOf(cc.charAt(i))!=-1)
            str+=qqPYStr().charAt(simpPYStr().indexOf(cc.charAt(i)));
        else
            str+=cc.charAt(i);
    }
    return str;
}

module.exports = {
	startToPayAB:startToPayAB,
	startToPayWx:startToPayWx,
	trim: utils.trim,
	replaceAll: utils.replaceAll,
	getCurrentPageUrl:getCurrentPageUrl,
	getCurrentPageUrlWithArgs:getCurrentPageUrlWithArgs,
	doPay:doPay,
	getToken: getToken,
	isLogin: isLogin,
	userlogin: userlogin,
	ifNull: ifNull,
	post: post,
	showLoad: showLoad,
	showToast: showToast,
	formatTime: formatTime,
	formatDate: formatDate,
	formatDateTime: formatDateTime,
	formatLocation: formatLocation,
	dateUtils: dateUtils
}
